/**
 * 应用程序主入口文件
 * 负责应用程序的初始化和主要逻辑协调
 */

/**
 * 应用程序核心对象
 */
const App = {
    /**
     * 初始化应用程序
     */
    init() {
        // 初始化各个管理器
        this._initManagers();

        // 初始化工作台标签页
        this._initWorkbenchTab();

        // 初始化全局事件监听
        this._initGlobalEvents();
    },

    /**
     * 初始化各个管理器
     * @private
     */
    _initManagers() {
        // 初始化标签页管理器
        if (typeof TabManager !== 'undefined') {
            TabManager.init();
        }

        // 初始化菜单管理器
        if (typeof MenuManager !== 'undefined') {
            MenuManager.init();
        }

        // 初始化工具栏管理器
        if (typeof ToolManager !== 'undefined') {
            ToolManager.init();
        }
    },

    /**
     * 初始化工作台标签页
     * @private
     */
    _initWorkbenchTab() {
        if (typeof TabManager !== 'undefined') {
            TabManager.addNewTab('工作台', 'about:blank', true);
        }
    },

    /**
     * 初始化全局事件监听
     * @private
     */
    _initGlobalEvents() {
        // 监听页面可见性变化
        Utils.on(document, 'visibilitychange', () => {
            if (document.visibilityState === 'visible') {
                // 页面变为可见时，检查并更新标签页状态
                if (typeof TabManager !== 'undefined') {
                    const activeTab = TabManager.getActiveTab();
                    if (
                        activeTab &&
                        activeTab.getAttribute('data-loaded') === 'true'
                    ) {
                        TabManager.refreshActiveTab();
                    }
                }
            }
        });

        // 监听浏览器窗口大小变化，调整布局
        const handleResize = Utils.debounce(() => {
            // 更新滚动按钮状态
            if (typeof TabManager !== 'undefined') {
                TabManager.updateScrollButtons();
            }

            // 调整标签页滚动位置
            if (typeof TabManager !== 'undefined') {
                const activeTab = TabManager.getActiveTab();
                if (activeTab) {
                    TabManager.scrollToTab(activeTab);
                }
            }

            // 调整浮动菜单位置（如果可见）
            if (typeof MenuManager !== 'undefined') {
                const floatingMenu = document.getElementById('floatingMenu');
                if (floatingMenu && floatingMenu.style.display === 'block') {
                    MenuManager.hideFloatingMenuImmediately();
                }
            }
        }, 200);

        Utils.on(window, 'resize', handleResize);
    },
};

// 页面加载完成后初始化应用
Utils.on(window, 'load', () => {
    // 等待所有脚本加载完成后初始化应用
    setTimeout(() => {
        App.init();
    }, 100);
});

// 导出App对象供外部使用
if (typeof module !== 'undefined') {
    module.exports = { App };
}
